package com.weixing.mall.provider.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.weixing.mall.provider.model.domain.Order;
import com.weixing.mall.provider.model.vo.report.finance.*;
import com.weixing.mall.provider.model.vo.report.finance.newest.regular.*;
import com.weixing.mall.provider.model.vo.report.finance.newest.seckill.FinanceSeckillSummary1Vo;
import com.weixing.mall.provider.model.vo.report.finance.newest.seckill.FinanceSeckillSummary2Vo;
import com.weixing.mall.provider.model.vo.report.finance.newest.seckill.FinanceSeckillSummaryDetail1Vo;
import com.weixing.mall.provider.model.vo.report.finance.newest.seckill.FinanceSeckillSummaryRebateDetailVo;

/**
 * @author jzy
 * @date 2020/5/30
 */
public interface IDayReportFinanceService  extends IService<Order> {

    /**
     * 1财务部报表-最新表样-正价财务报表-表样1-正价汇总表1
     * @param orderType 订单类型 1正价订单 2代理商活动订单 3秒杀活动订单
     * @param yearMonth
     * @param startTime
     * @param endTime
     * @param initMpPage
     * @return
     */
    IPage<FinanceRegularSummary1Vo> regularSummary1(Integer orderType,String yearMonth, String startTime, String endTime, Page initMpPage);

    /**
     * 1财务部报表-最新表样-正价财务报表-表样2-正价汇总表2
     * @param roleType
     * @param agentId
     * @param orderType  订单类型 1正价订单 2代理商活动订单 3秒杀活动订单
     * @param yearMonth
     * @param startTime
     * @param endTime
     * @param initMpPage
     * @return
     */
    IPage<FinanceRegularSummary2Vo> regularSummary2(Integer roleType, Long agentId,Integer orderType, String yearMonth, String startTime, String endTime, Page initMpPage);

    /**
     * 1财务部-最新表样-正价明细表-表样3-表样3-1订单明细
     * @param roleType
     * @param agentId
     * @param orderType 订单类型 1正价订单 2代理商活动订单 3秒杀活动订单
     * @param status 订单状态  空是全部 1退货订单  2取消断货订单
     * @param yearMonth
     * @param startTime
     * @param endTime
     * @param initMpPage
     * @return
     */
    IPage<FinanceRegularSummaryDetail1Vo> regularSummaryDetail1(Integer roleType, Long agentId,Integer orderType,Integer status, String yearMonth, String startTime, String endTime, Page initMpPage);
    /**
     * 1财务部-最新表样-正价明细表-表样3-表样3-4返代理款明细
     * @param roleType
     * @param agentId
     * @param orderType 订单类型 1正价订单 2代理商活动订单 3秒杀活动订单
     * @param status 订单状态  空是全部 1退货订单  2取消断货订单
     * @param yearMonth
     * @param startTime
     * @param endTime
     * @param initMpPage
     * @return
     */
    IPage<FinanceRegularSummaryDetail4Vo> regularSummaryDetail4(Integer roleType, Long agentId, Integer orderType, Integer status, String yearMonth, String startTime, String endTime, Page initMpPage);
    /**
     * 1财务部-最新表样-正价明细表-表样3-表样3-4-1返代理款明细
     * @param roleType
     * @param agentId
     * @param orderType 订单类型 1正价订单 2代理商活动订单 3秒杀订单
     * @param yearMonth
     * @param startTime
     * @param endTime
     * @param initMpPage
     * @return
     */
    IPage<FinanceRegularSummaryRebateDetailVo> regularSummaryRebateDetailVo(Integer roleType, Long agentId,Integer orderType, String yearMonth, String startTime, String endTime, Page initMpPage);

    /**
     * 1财务部报表-最新表样-2.5折财务报表-表样1-2.5折汇总表1
     * @param yearMonth
     * @param startTime
     * @param endTime
     * @param initMpPage
     * @return
     */
    IPage<FinanceSeckillSummary1Vo> seckillSummary1(String yearMonth, String startTime, String endTime, Page initMpPage);

    /**
     * 1财务部报表-最新表样-2.5折财务报表-表样2- 2.5折汇总表2
     * @param roleType 角色 类型 1客服 2代理商
     * @param agentId 代理商Id
     * @param yearMonth 年月
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param initMpPage 分页
     * @return
     */
    IPage<FinanceSeckillSummary2Vo> seckillSummary2(Integer roleType, Long agentId,String yearMonth, String startTime, String endTime, Page initMpPage);

    /**
     * 1财务部-最新表样-2.5折财务报表-表样3-表样3-1订单明细
     * @param roleType 角色类型 1客服 2代理商
     * @param agentId 代理商Id
     * @param status 状态 空是全部 1退货 2断货/取消 3返代理款
     * @param yearMonth 年月
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param initMpPage 分页
     * @return
     */
    IPage<FinanceSeckillSummaryDetail1Vo> seckillSummaryDetail1(Integer roleType, Long agentId,Integer status, String yearMonth, String startTime, String endTime, Page initMpPage);

    /**
     * 1财务部-最新表样-2.5折财务报表-表样3-表样3-4-1返代理款明细
     * @param roleType 角色类型 1客服 2代理商
     * @param agentId
     * @param yearMonth
     * @param startTime
     * @param endTime
     * @param initMpPage
     * @return
     */
    IPage<FinanceSeckillSummaryRebateDetailVo> seckilSummaryRebateDetail(Integer roleType, Long agentId, String yearMonth, String startTime, String endTime, Page initMpPage);
    /**
     * 2财务部报表--代理晋升报表
     * @param customerId 客服Id
     * @param distributorId 经销商Id
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param agentName 代理商名称
     * @param initMpPage 分页
     * @return FinancePromoteVo
     */
    IPage<FinancePromoteVo> financePromote(Long customerId, Long distributorId, String startTime, String endTime, String agentName, Page initMpPage);
    /**
     * 2财务部报表--代理晋升明细
     * @param agentId 代理商Id
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param initMpPage 分页
     * @return FinancePromoteVo
     */
    IPage<FinancePromoteDetailVo> financePromoteDetail(Long agentId, String startTime, String endTime, Page initMpPage);

    /**
     * 2财务部报表--代理收费报表
     * @param roleType 角色类型
     * @param agentId 代理商Id
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param initMpPage 分页
     * @return FinanceAgentFeeVo
     */
    IPage<FinanceAgentFeeVo> financeAgentFee( Integer roleType, Long agentId, String startTime, String endTime, Page initMpPage);

    /**
     * 2财务部报表--代理收费报表-详细
     * @param type 类型 1试用用户总数 2试用过期总数 3转正收款总数 4正式总数 5退款用户总数 6过期用户总数
     * @param roleType 角色类型
     * @param agentId 代理商Id
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param initMpPage 分页
     * @return FinanceAgentFeeDetailVo
     */
    IPage<FinanceAgentFeeDetailVo> financeAgentFeeDetail(Integer type,Integer roleType, Long agentId, String startTime, String endTime, String agentName,String mobile,String cardId, Page initMpPage);

    /**
     * 4财务部报表--客服业绩报表
     * @param orderType 订单类型  1正价 2代理商活动 3秒杀活动
     * @param actName 活动名称
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param sortField 排序字段
     * @param sortType 排序 asc正序 desc倒序
     * @param initMpPage 分页
     * @return FinanceCustomerPerformanceVo
     */
    IPage<FinanceCustomerPerformanceVo> financeCustomerPerformance(Integer orderType, String actName, String startTime, String endTime, String sortField, String sortType, Page initMpPage);

    /**
     * 4财务部报表--客服业绩报表-详细业绩
     * @param orderType 订单类型
     * @param actName 活动名称
     * @param roleType 角色类型
     * @param agentId 代理商Id
     * @param userName 用户名
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param sortField 排序字段
     * @param sortType 排序 asc正序 desc倒序
     * @param initMpPage 分页
     * @return FinanceCustomerPerformanceDetailVo
     */
    IPage<FinanceCustomerPerformanceDetailVo> financeCustomerPerformanceDetail(Integer orderType, String actName,Integer roleType, Long agentId,Long agentPid,Integer pRole, String userName,String startTime, String endTime, String sortField, String sortType, Page initMpPage);
}
